Skip to main content

第 1 课:环境配置

通过表来存储数据的叫关系型数据库

image-20250706183936664

(一)Ubuntu 安装MySQL

(1)安装

安装数据库

sudo apt update
sudo apt install mysql-server

查看安装的mysql版本

mysql --version

手动 启动数据库

sudo /etc/init.d/mysql start

启动MySQL服务,和上一条命令功能一样锁定

sudo systemctl start mysql
sudo systemctl status mysql

开机自启MySQL服务

sudo systemctl enable mysql

停止MySQL服务

sudo systemctl stop mysql

重启MySQL服务

sudo systemctl restart mysql


(2)安全性升级

启动 mysql-secure-installation

sudo mysql_secure_installation

接下来会有几个提示:

  • 询问是否验证密码插件:选yes

  • 选择合适的密码强度:2

  • 选择是否删除所有匿名用户:yes

  • 是否允许root远程连接:N

  • 是否删除最初的test测试数据库:N

  • 使设置马上生效:y



(3)调整身份验证

MySQL Server 带有一个客户端实用程序,可以从 Linux 终端访问数据库并与之交互。

通常,未做任何配置时,在 Ubuntu 上全新安装 MySQL 后,访问服务器的用户将使用 auth_socket 插件进行身份验证。

auth_socket 的使用会阻止服务器使用密码对用户进行身份验证。它不仅会引发安全问题,而且还会使用户无法借助外部程序(如 phpMyAdmin)访问数据库。因此我们需要将身份验证方法从 auth_socket 更改为使用 mysql_native_password。

打开 MySQL 控制台

sudo mysql

检查数据库对不同用户使用的身份验证方法。

SELECT user,authentication_string,plugin,host FROM mysql.user;

在MySQL以及许多其他SQL数据库系统中,分号(;)作为语句的终结符使用,

image-20250706190925287

user用户的名称
authentication_string用户密码的加密字符串。root用户在这里没有加密密码,因为它使用了另一种认证方法auth_socket,阻止服务器使用密码对用户进行身份验证。所以可以确认 root 用户确实使用 auth_socket 进行了身份验证。
plugin用于认证的插件名称。在这个例子中,除了root用户使用auth_socket插件外,其他用户都使用了caching_sha2_password插件。auth_socket插件允许通过操作系统的用户认证登录MySQL,而不需要密码,这通常在root用户上看到。caching_sha2_password是MySQL 8及更高版本的默认认证插件,提供了基于SHA-256的密码加密机制。
host指定了用户允许从哪个主机连接到数据库服务器。在给出的例子中,所有用户都只能从localhost连接,这意味着他们只能从MySQL服务器所在的机器进行本地连接

切换到密码验证。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

另外需要注意的是,确保使用较强密码,因为它将替换你在执行上述命令 sudo mysql_secure_installation 时设置的密码。


刷新权限。重新加载授权表并将更改更新到 MySQL 数据库

FLUSH PRIVILEGES;

此刻我们再查看用户的验证状态,就可以看到root的验证方式已经改变

退出mysql控制台

\q

由于我们更改了 root 的身份验证方法,因此我们无法使用之前 sudo mysql 命令打开 MySQL 控制台。

mysql -u root -p
  • -u:用户,这里是“root”,

  • -p:“password”



(4)创建新用户

创建一个权限较低的新用户Heihe

进入控制台

mysql -u root -p

创建新用户

CREATE USER 'Heihe'@'localhost' IDENTIFIED BY '密码';

解释:

  • CREATE USER:创建一个新的数据库用户。

  • 'Heihe'@'localhost': 新用户的只能从本地连接到数据库服务器。

  • IDENTIFIED BY '密码': 为新用户设置了登录密码。


分配所需的权限

GRANT ALL PRIVILEGES ON *.* TO 'Heihe'@'localhost' WITH GRANT OPTION;

退出控制台

exit;

尝试登录,登录成功

mysql -u Heihe -p


(5)允许远程访问

安装成功后,需要启用远程访问。

从逻辑上讲,我们需要在 Ubuntu 服务器防火墙上打开一个端口,以便 MySQL 数据库进行通信。默认情况下,MySQL 服务在 3306 端口上运行。

配置Uncomplicated Firewall(UFW),以允许外部访问MySQL服务

sudo ufw allow mysql
sudo ufw reload

现在需要配置服务器的接口,从而服务器能够侦听远程可访问的接口。我们需要编辑“mysqld.cnf”文件。


编辑“mysqld.cnf”文件。重置服务器的接口,从而服务器能够侦听远程可访问的接口。

配置绑定地址

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

默认情况下,绑定地址为“127.0.0.1”。为公网接口添加绑定地址,为服务网络接口添加另一个绑定地址。你可以将所有 IP 地址的绑定地址配置为“0.0.0.0”。


注意在datagrip中要设置 Allow Public Key Retrieval

image-20250706192010068



(二)Windows 安装 MySQL

https://blog.csdn.net/weixin_44512005/article/details/135777754



(三)CentOS 安装 MySQL

老系统:CentOS7安装MySQL8(亲测无坑百分百安装成功)-CSDN博客

新系统:最新 CentOS7 上使用 yum 安装 MySQL8 超详细教程_yum 安装mysql8-CSDN博客